package br.usp.ime.comercioeletronico.modelo;

import org.nakedobjects.extended.Cardinality;
import org.nakedobjects.extended.CompositeAssociation;
import org.nakedobjects.extended.Entity;
import org.nakedobjects.extended.Way;
import org.nakedobjects.extended.CompositeAssociation.CompositeType;
import org.nakedobjects.object.AbstractNakedObject;
import org.nakedobjects.object.Title;
import org.nakedobjects.object.collection.ExtendedInternalCollection;
import org.nakedobjects.object.value.TextString;

@Entity
public class Categoria extends AbstractNakedObject {
	
	private TextString nome = new TextString();
	
	@CompositeAssociation(
			cardinality = Cardinality.ManyToMany, 
			compositeType = CompositeType.Logical, 
			fieldRelatedName = "categorias", 
			relatedWith = Produto.class, 
			way = Way.TwoWay 
			)
	private final ExtendedInternalCollection produtos = new ExtendedInternalCollection(
			"Produtos", Produto.class, this);
	
	public ExtendedInternalCollection getProdutos() {
		return produtos;
	}
	
	public TextString getNome() {
		return nome;
	}

	public Title title() {
		return getNome().title();
	}

}
